//
//package sc.tool.audio;
//
//import java.io.DataInputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.InputStream;
//
//import android.media.AudioFormat;
//import android.media.AudioManager;
////import android.media.AudioRecord;
//import android.media.AudioTrack;
//
//
////https://www.cnblogs.com/whoislcj/p/5477229.html
//// 实时语音只能选择AudioRecord进行录音。然后实时播放也只能采用AudioTrack进行播放。
//public class AudioTrackManager
//{
//	public static final String TAG = "AudioTrackManager";
//	private AudioTrack audioTrack;
//	private DataInputStream dis;
//	private Thread recordThread;
//	private boolean isStart = false;
//	private static AudioTrackManager mInstance;
//	private int bufferSize;
//	
//	public AudioTrackManager()
//	{
//		bufferSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
//		audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize * 2,
//				AudioTrack.MODE_STREAM);
//	}
//	
//	/** 获取单例引用  */
//	public static AudioTrackManager getInstance()
//	{
//		if (mInstance == null)
//		{
//			synchronized (AudioTrackManager.class)
//			{
//				if (mInstance == null)
//				{
//					mInstance = new AudioTrackManager();
//				}
//			}
//		}
//		return mInstance;
//	}
//	
//	/** 销毁线程方法 */
//	private void destroyThread()
//	{
//		try
//		{
//			isStart = false;
//			if (null != recordThread && Thread.State.RUNNABLE == recordThread.getState())
//			{
//				try
//				{
//					Thread.sleep(500);
//					recordThread.interrupt();
//				}
//				catch (Exception e)
//				{
//					recordThread = null;
//				}
//			}
//			recordThread = null;
//		}
//		catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//		finally
//		{
//			recordThread = null;
//		}
//	}
//	
//	/** 启动播放线程 */
//	private void startThread()
//	{
//		destroyThread();
//		isStart = true;
//		if (recordThread == null)
//		{
//			recordThread = new Thread(recordRunnable);
//			recordThread.start();
//		}
//	}
//	
//	/** 播放线程 */
//	Runnable recordRunnable = new Runnable()
//	{
//		@Override
//		public void run()
//		{
//			try
//			{
//				android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
//				byte[] tempBuffer = new byte[bufferSize];
//				int readCount = 0;
//				while (dis.available() > 0)
//				{
//					readCount = dis.read(tempBuffer);
//					if (readCount == AudioTrack.ERROR_INVALID_OPERATION || readCount == AudioTrack.ERROR_BAD_VALUE)
//					{
//						continue;
//					}
//					if (readCount != 0 && readCount != -1)
//					{
//						audioTrack.play();
//						audioTrack.write(tempBuffer, 0, readCount);
//					}
//				}
//				stopPlay();
//			}
//			catch (Exception e)
//			{
//				e.printStackTrace();
//			}
//		}
//		
//	};
//	
//	/** 播放文件
//	 * 
//	 * @param path
//	 * @throws Exception */
//	private void setPath(String path) throws Exception
//	{
//		File file = new File(path);
//		dis = new DataInputStream(new FileInputStream(file));
//		
//		InputStream iput = new InputStream();
//		DataInputStream inputStream = new DataInputStream();
//	}
//	
//	/** 启动播放  */
//	public void startPlay(String path)
//	{
//		try
//		{
//			setPath(path);
//			startThread();
//		}
//		catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//	}
//	
//	/** 停止播放 */
//	public void stopPlay()
//	{
//		try
//		{
//			destroyThread();
//			if (audioTrack != null)
//			{
//				if (audioTrack.getState() == AudioRecord.STATE_INITIALIZED)
//				{
//					audioTrack.stop();
//				}
//				
//				if (audioTrack != null)
//				{
//					audioTrack.release();
//				}
//			}
//			if (dis != null)
//			{
//				dis.close();
//			}
//		}
//		catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//	}
//	
//}
